package work.learn.interfaces;

import java.util.ArrayList;
import java.util.List;

/*
内部实现
常用的 List 实现类有 ArrayList 和 LinkedList：
ArrayList：基于动态数组实现。它内部维护一个 Object[] 数组来存储元素。当元素数量超过数组容量时，会自动扩容，通常新容量是原容量的 1.5 倍。ArrayList 支持快速的随机访问，但插入和删除操作（非末尾插入删除）效率较低，因为可能需要移动大量元素。
LinkedList：基于双向链表实现。每个节点包含前驱和后继指针。这使得 LinkedList 在插入和删除操作上效率较高，只需修改指针指向即可，但随机访问效率较低，需要从链表头或尾开始遍历查找元素。
* */
public class ListExample {
    public static void main(String[] args) {
        // 创建
        List<String> arr = new ArrayList<>();
        // 添加
        arr.add("1");
        arr.add("2");
        arr.add("3");
        arr.add("4");
        // 删除
        arr.remove("2");
        // 查询
        String firstItem = arr.get(0);
        System.out.println("firstItem = " + firstItem);
        // 遍历
        for (String item : arr) {
            System.out.println("item = " + item);
        }
        // hashcode
        System.out.println("arr.hashCode() = " + arr.hashCode());
    }
}
